home *** CD-ROM | disk | FTP | other *** search
- program tstdh;
-
- { Testprogram for the nwFile unit / NwTP 0.6 API. (c) 1993,1995, R.Spronk }
-
- uses nwMisc,nwConn,nwFile;
-
- { Test the following drive(handle) related calls:
-
- GetDirectoryHandle
- GetDirectoryPath
- GetDriveConnectionId
- GetDriveHandle
- GetDriveFlag
- GetNumberOfLocalDrives (nwConn)
- GetVolumeNameWithHandle
- IsNetworkDrive
-
- GetEnvPath
- GetSearchDriveVector
- IsSearchDrive
- SetEnvPath
- SetSearchDriveVector
-
- }
-
- Var t,dirhandle,status:byte;
- status2,dirHandle2:byte;
- volname:string;
- connId:byte;
- locDrives:byte;
- dirPath:string;
- serverName:string;
-
- NewDirHandle, EffectiveRights:byte;
- connId2,Dflag:byte;
-
- vector,vector2:TsearchDriveVector;
- pth,pth2:string;
-
- begin
- {-- drivenumbers, dirhandles --}
-
- nwconn.GetNumberofLocalDrives(locDrives);
- writeln('Local Drives:',locDrives); { Drivenumbers 0..locDrives-1 taken by local drives }
- writeln;
-
- for t:=0 to locDrives-1
- do If IsNetworkDrive(t)
- then writeln('Error?: IsNetworkDrive failed for drive ',chr(ord('A')+t));
-
- for t:=locDrives to 31
- do begin
- IF GetDirectoryHandle(t,dirHandle,status)
- then begin
- writeln(chr(t+ord('A')),' handle=',dirHandle,' status=',status);
- GetDriveHandle(t,dirHandle2);
- GetDriveFlag(t,status2);
- if (status<>status2) or (dirHandle<>dirHandle2)
- then writeln('Error: GetDirectoryHandle data differs from GetDriveHandle/Flag data.');
-
- if IsNetworkDrive(t) XOR ((status AND $80)=0)
- then writeln('Error: IsNetworkDrive failed.');
-
- GetDirectoryPath(dirHandle,dirpath);
- write('=> ',dirpath);
-
- if GetDriveConnectionId(t,connId)
- then begin
- write(' connId=',connId);
- nwConn.GetFileServerName(connId,serverName);
- write(' volume=\\',servername,'\');
- end;
-
- IF (status<3) {temporary or permanent mapping}
- and GetVolumeNameWithHandle(dirHandle,volName)
- then write(volName);
-
- writeln;
- end
- end;
-
-
- {-- seachdrives, searchdrive vector-- }
- writeln;
- writeln('<RETURN> to continue..');
- writeln;
- readln;
-
- GetSearchDriveVector(vector);
- write('Searchdrivevector: ');
- for t:=1 to 17
- do if vector[t]<255
- then write(chr(byte(vector[t]+ord('A'))),' ')
- else write('$FF ');
- writeln;
-
- FillChar(vector2,Sizeof(TsearchDriveVector),#$FF);
- SetSearchDriveVector(vector2);
- FillChar(vector2,Sizeof(TsearchDriveVector),#$00);
- GetSearchDriveVector(vector2);
- if (vector2[1]<>$FF)
- then writeln('Error: SetSearchdriveVector Failed.');
- SetSearchDriveVector(vector); { restore old vector }
-
- GetEnvPath(pth);
- writeln('PATH setting in the master environment=',pth);
- SetEnvPath('this_is_a_bogus_path;');
- GetEnvPath(pth2);
- writeln('Path is temporarily set to: ',pth2);
- SetEnvPath(pth);
- writeln('Path reset to original value.');
-
- Write('Searchdrives (using IsSearchDrive):');
- for t:=locDrives to 31
- do If IsSearchDrive(t)
- then write(chr(t+ord('A')),' ');
- writeln;
-
- {----------------- directory handles ---------------------}
- writeln('<RETURN> to continue..');
- writeln;
-
- t:=locDrives;
- While (t<26) and GetDirectoryHandle(t,dirHandle,status)
- do inc(t);
- Writeln('First free drive: ',chr(t+ord('A')));
-
- IF NOT AllocPermanentDirHandle(t,0,'SYS:LOGIN',NewDirHandle, EffectiveRights)
- then writeln('Error calling AllocPermanentDirHandle: ',nwFile.result);
-
- GetDirectoryPath(NewDirHandle,pth);
- IF SetDriveHandle(t,NewDirHandle)
- then writeln('SetDriveHandle: drive ',chr(t+ord('A')),' asociated with dirHandle to path ',pth)
- else writeln('Error using SetDriveHandle: ',nwFile.result);
-
- GetDriveHandle(t,dirHandle);
- if dirHandle<>NewDirHandle
- then writeln('Error in SetDriveHandle.');
-
- GetEffectiveConnectionId(connId);
- { all requests have been sent to the effective server up to now, so
- that's the server the drive is connected to }
- SetDriveConnectionId(t,connId);
- GetDriveConnectionId(t,connId2);
- If ConnId2<>ConnId
- then writeln('Error in Set/GetDriveConnectionId');
- GetDriveFlag(t,Dflag);
- SetDriveFlag(t,(Dflag and $80) or 1);
-
- writeln('(non-root) Mapping completed.');
- { see the MAPDRIVE function in nwFile;
- it creates (temporary) mappings in much the same way as above }
-
-
- {map a temporary drive}
- IF MapDrive(31,'SYS:MAIL',{root drive:} false, {permanent mapping:} false {true})
- then begin
- GetDriveHandle(31,dirHandle);
- GetDirectoryPath(dirHAndle,pth);
- Writeln('Temporary! drive ',chr(31+ord('A')),' mapped to ',pth);
- { If mapdrive works, so must
-
- DeleteFakeRootDirectory
- GetTrueEntryName
- MapFakeRootDirectory
-
- }
- end
- else writeln('Error using MapDrive: ',nwFile.result);
-
-
- writeln;
- t:=locDrives;
- While (t<26) and GetDirectoryHandle(t,dirHandle,status)
- do inc(t);
- Writeln('Another free drive: ',chr(t+ord('A')));
-
- IF MapSearchDrive(t,'SYS:PUBLIC',16,{insert:}false,
- {root:}false,{permanent:}true)
- then begin
- GetDriveHandle(t,dirHandle);
- GetDirectoryPATh(dirHAndle,pth);
- Writeln('drive ',chr(t+ord('A')),' mapped (as a searchdrive) to ',pth);
- end
- else writeln('Error using MapSearchDrive: ',nwFile.result);
-
-
- writeln;
- t:=locDrives;
- While (t<26) and GetDirectoryHandle(t,dirHandle,status)
- do inc(t);
- Writeln('Another free drive: ',chr(t+ord('A')));
-
- IF MapPermanentDrive(t,'SYS:PUBLIC',{root:}true)
- then begin
- GetDriveHandle(t,dirHandle);
- GetDirectoryPATh(dirHAndle,pth);
- Writeln('drive ',chr(t+ord('A')),' mapped (permanently) to ',pth);
-
- IF NOT SetDirectoryHandle(0,'SYS:MAIL',dirHandle)
- then writeln('Error using SetDirectoryHandle: ',nwFile.result)
- else begin
- GetDirectoryPATh(dirHAndle,pth);
- Writeln('drive ',chr(t+ord('A')),' => handle changed to ',pth);
- end;
-
- end
- else writeln('Error using MapPermanentDrive: ',nwFile.result);
-
-
- end.